package cn.stronglink.asset.module.dam.utils.dataJsonUtils.req.receive;

import java.util.ArrayList;
import java.util.List;

public class GetCmdFromStr {
	private static ArrayList<String> viewIndexs = new ArrayList<String>();
	private static ArrayList<String> params = new ArrayList<String>();

	static {
		viewIndexs.add("01");
		viewIndexs.add("02");
		viewIndexs.add("03");
		viewIndexs.add("04");
		viewIndexs.add("05");
		viewIndexs.add("06");

		params.add("00");// 上一页
		params.add("01");// 下一页
	}

	/**
	 * 头部： BB01 ===》4个 接受指令： 拆分数据，读取信息01 01 01 03 00/01 上一页 下一页 ===》8个+2 尾部： 00FF
	 * FCFF FF ===》10个
	 */
	public static List<Integer> getRequesetInfo(String command) {
		List<Integer> openViewsList = new ArrayList<Integer>();
		// 读数据头部 BB01
		int headIndex = command.indexOf("BB01");
		System.out.println(command.length());
		if (headIndex != -1 && command.length() >= headIndex + 10) {

			// 1，先读第一个数据 设备号： 01
			int devIndex = command.indexOf("01", headIndex+4);
			if (devIndex != -1 && command.length() >= devIndex + 6) {

				// 2, 再找： 版本号 01
				int versionIndex = command.indexOf("01", devIndex + 2);
				if (versionIndex != -1 && command.length() >= versionIndex + 4) {

					// 3，继续找 命令类型 ： 01 02 03 04 05 06
					String cmdType = command.substring(versionIndex + 2, versionIndex + 4);//
					if ("01".equals(cmdType) && command.length() >= versionIndex + 6) {// 指令编号： 1--打开指定窗口

						// 4, 找出页面id
						String viewIndex = command.substring(versionIndex + 4, versionIndex + 6);
						if (viewIndexs.contains(viewIndex)) {
							openViewsList.add(Integer.valueOf(viewIndex));

							// 4.2 找出页面：操作参数--翻页操作 参数： 00上一页 01 下一页
							if (command.length() >= versionIndex + 8) {
								String param = command.substring(versionIndex + 6, versionIndex + 8);
								if (params.contains(param)) {
									openViewsList.add(Integer.valueOf(param));
								}
							}
							// 找到了第一个： 有效数据后， ///丢弃已找完的数据/// 继续找下去，直到没有数据了
							// command = command.substring(versionIndex + 4);
							// getRequesetInfo(command);
						}

					} else if ("02".equals(cmdType)) { // ===命令2==== 设置网络
						openViewsList.add(222);// 以222： 不可能出现的界面id, 代表指令为2
					} else if ("03".equals(cmdType)) { // =====命令3=====设置传感器类型
						openViewsList.add(333);// 以333： 不可能出现的界面id, 代表指令为3
					}
				}
			}
		}
		return openViewsList;
	}
}
